package com.sa07.db;

import java.sql.ResultSet;

import com.sa07.exception.DatabaseExecuteFailedException;

/**
 * 数据库访问接口
 * 
 * @author Long.shangbo
 *
 * 2014-2-15 下午6:38:23
 */
public interface Session {

	/**
	 * 测试连接
	 * @return
	 */
	boolean testLink();
	
	/**
	 * 执行非查询
	 * @return 影响函数
	 */
	int executeNoneQuery(String sql, Object...params) throws DatabaseExecuteFailedException;
	
	/**
	 * 执行查询的方法
	 * @param sql
	 * @param params
	 * @return
	 */
	ResultSet executeQuery(String sql, Object...params) throws DatabaseExecuteFailedException;
	
	/**
	 * 查询返回DataTable的方法
	 * @param sql
	 * @param params
	 * @return
	 * @throws DatabaseExecuteFailedException
	 */
	DataTable executeDataTable(String sql, Object...params) throws DatabaseExecuteFailedException;
	
	/**
	 * 返回单个值的方法
	 * @return
	 * @throws DatabaseExecuteFailedException
	 */
	Object executeScalar(String sql, Object... params) throws DatabaseExecuteFailedException;
	
	/**
	 * 提交事务
	 */
	void commit() throws DatabaseExecuteFailedException;
	
	/**
	 * 回滚事务
	 */
	void rollBack() throws DatabaseExecuteFailedException;
	
	/**
	 * 关闭session
	 */
	void close() throws DatabaseExecuteFailedException;
}
